package com.yxy.common.utils;

import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.symmetric.AES;

import java.util.Base64;

public class AesUtils {

   public static final String secretKey="ILbXb2alrvxjkBmHccJRKQ==";
    // 加密
    public static String encrypt(String plainText) {
        byte[] keyBytes = Base64.getDecoder().decode(secretKey);
        AES aes = SecureUtil.aes(keyBytes);
        return aes.encryptHex(plainText);
    }

    //解密
    public static String decrypt(String encryptedText) {
        byte[] keyBytes = Base64.getDecoder().decode(secretKey);
        AES aes = SecureUtil.aes(keyBytes);
        return aes.decryptStr(encryptedText);
    }


    public static void main(String[] args) {
        try {
            String originalText = "123456";

            String encrypted = encrypt(originalText);
            String decrypted = decrypt(encrypted);

            System.out.println("原文: " + originalText);
            System.out.println("加密: " + encrypted);
            System.out.println("解密: " + decrypted);

        } catch (Exception e) {
            System.out.println("发生错误: " + e.getMessage());
            e.printStackTrace();

            // 如果是密钥长度问题，建议安装JCE或使用128位密钥
            System.out.println("\n建议解决方案:");
            System.out.println("1. 安装JCE无限强度策略文件");
            System.out.println("2. 或者使用128位密钥: " + generate128BitKey());
        }
    }
    /**
     * 生成安全的128位密钥
     */
    public static String generate128BitKey() {
        // Hutool 5.8.3 可能不支持直接指定密钥长度，可以这样生成
        String key = "abcdefghijklmnop"; // 16字符 = 128位
        return Base64.getEncoder().encodeToString(key.getBytes());
    }
}
